<?php
// 版权所有 (C) 2025 尋鯨錄
// 保留所有权利。
// 博客：https://www.xunjinlu.fun/
// 如需二开请保留版权，谢谢。

header('Content-Type: application/json');

// 引入认证配置
require_once 'config.php';

// 检查用户权限
if (!isUserLoggedIn()) {
    echo json_encode(array('success' => false, 'error' => '需要登录才能重传图片'));
    exit();
}

// 设置允许的图片类型
$allowed_types = array(
    'image/jpeg',
    'image/png',
    'image/gif',
    'image/bmp',
    'image/webp',
    'image/tiff',
    'image/svg+xml'
);

// 检查请求方法
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    echo json_encode(['success' => false, 'error' => '无效的请求方法']);
    exit();
}

// 检查是否有文件上传
if (!isset($_FILES['image']) || $_FILES['image']['error'] !== UPLOAD_ERR_OK) {
    echo json_encode(['success' => false, 'error' => '文件上传失败']);
    exit();
}

// 获取要替换的文件名
$replace_filename = $_POST['replace_filename'] ?? '';

if (empty($replace_filename)) {
    echo json_encode(['success' => false, 'error' => '替换文件名不能为空']);
    exit();
}

// 安全检查：确保文件名只包含数字和扩展名
if (!preg_match('/^\d+\.(jpg|jpeg|png|gif|bmp|webp|tiff|svg)$/i', $replace_filename)) {
    echo json_encode(['success' => false, 'error' => '无效的替换文件名']);
    exit();
}

$file = $_FILES['image'];
$file_type = $file['type'];
$file_name = $file['name'];
$tmp_name = $file['tmp_name'];

// 检查文件类型
if (!in_array($file_type, $allowed_types)) {
    echo json_encode(['success' => false, 'error' => '文件类型不支持']);
    exit();
}

// 获取文件扩展名
$extension = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));

// 检查img目录
if (!file_exists('img')) {
    mkdir('img', 0777, true);
}

// 构建目标文件路径（保持原文件名，只替换内容）
$target_path = 'img/' . $replace_filename;

// 检查原文件是否存在
if (!file_exists($target_path)) {
    echo json_encode(['success' => false, 'error' => '要替换的文件不存在']);
    exit();
}

// 移动上传的文件到目标位置（覆盖原文件）
if (move_uploaded_file($tmp_name, $target_path)) {
    $image_url = 'http://' . $_SERVER['HTTP_HOST'] . 
                dirname($_SERVER['REQUEST_URI']) . 
                '/img/' . $replace_filename;
    echo json_encode(['success' => true, 'url' => $image_url, 'message' => '图片重传成功']);
} else {
    echo json_encode(['success' => false, 'error' => '文件重传失败']);
}
?> 